In general, in systems including servers in each of a plurality of layers that exchange messages with each other and perform processing (e.g., electronic commerce systems), the messages are exchanged among servers using, as a key, a character string (e.g., a request ID) that associates messages with one another. In addition, in some cases, different key character strings are used in different layers (e.g., a Web server layer and an application server layer).
In order to monitor system behavior or analyze a request delay, by using such a plurality of key character strings, a process for putting together related messages (i.e., a linking process) is performed at high speed and analyzes the route of a message corresponding to a particular request and the time at which the message flows.
However, the number of messages that flow in the system is enormous and, therefore, only a single linking apparatus (e.g., a single computer) may not be sufficient to process the messages within a predetermined period of time. Accordingly, for example, a plurality of linking apparatuses can be provided and perform linking processes in parallel in accordance with key character strings to be processed.
For example, when a linking process is performed by a single linking apparatus and a response to a request sent from a client terminal is not returned, it is easy to extract a message that has not yet been linked, since the extraction can be done by reading a message that has not been linked and that is stored in a buffer of the single linking apparatus. However, if there are a plurality of linking apparatuses performing linking processes in parallel, identifying a linking apparatus that stores the message is difficult and, therefore, the message cannot be extracted easily.